A transaction may be a unit of work performed within a data processing system (or similar system), which may be treated in a coherent and reliable way independent of other transactions. A transaction may be atomic, consistent, isolated and durable, and may be an enabling technology for many complex applications, such as credit card transactions, airline reservations, and the like.
Transactions may provide an “all-or-nothing” proposition, stating that each work-unit performed may either complete in its entirety or have no effect whatsoever. Further, the system may isolate each transaction from other transactions, results may conform to existing constraints, and transactions that complete successfully may get written to durable storage.
Conventional transaction systems may limit the scope of a transaction, as transaction support may be limited to a single data source. Such limitations may restrict the ability of large applications to process complex transactions, which may want to access data stored in a distributed collection of data sources. Supporting transactions in such a setting may be very complicated and may involve the use of a distributed commit protocol.